﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.IO;
using Libs.Utils;
using Libs.Security;

/// <summary>
/// Summary description for AppUtils
/// </summary>
public class AppUtils
{
    public AppUtils()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    public static void CheckLogin()
    {
        if (HttpContext.Current.Session["Email"] == null)
        {
            HttpContext.Current.Response.Redirect(Constant.ADMIN_PATH + Resources.Url.SignOut + "?u=" + HttpUtility.UrlEncode(HttpContext.Current.Request.Url.ToString()));
        }

        if (!new Users().CheckUrl(UserID(), HttpContext.Current.Request.Url.LocalPath.ToLower().Replace(Constant.ADMIN_PATH.ToLower(), ""))) HttpContext.Current.Response.Redirect(Constant.ADMIN_PATH + Resources.Url.SignOut);
    }

    public static int Request(string name)
    {
        try
        {
            return Convert.ToInt32(HttpContext.Current.Request[name]);
        }
        catch
        {
            return 0;
        }
    }

    public static int UserID()
    {
        return Convert.ToInt32(HttpContext.Current.Session["UserID"]);
    }

    public static string LastestTime()
    {
        return HttpContext.Current.Session["LastestTime"].ToString();
    }

    public static string Email()
    {
        return HttpContext.Current.Session["Email"].ToString();
    }

    public static string FullName()
    {
        return HttpContext.Current.Session["FullName"].ToString();
    }

    public static bool CheckPath()
    {
        string path = Constant.MEDIA_PATH + DateTime.Now.ToString("yyyy/MM/dd/");
        try
        {
            if (!Directory.Exists(HttpContext.Current.Server.MapPath(path))) Directory.CreateDirectory(HttpContext.Current.Server.MapPath(path));
            return true;
        }
        catch
        {
            return false;
        }
    }

    public static string UCS2Lower(string s)
    {
        string[] aUTF8Lower = { "a", "á", "à", "ả", "ã", "ạ", "ă", "ắ", "ằ", "ẳ", "ẵ", "ặ", "â", "ấ", "ầ", "ẩ", "ẫ", "ậ", "đ", "e", "é", "è", "ẻ", "ẽ", "ẹ", "ê", "ế", "ề", "ể", "ễ", "ệ", "i", "í", "ì", "ỉ", "ĩ", "ị", "o", "ó", "ò", "ỏ", "õ", "ọ", "ô", "ố", "ồ", "ổ", "ỗ", "ộ", "ơ", "ớ", "ờ", "ở", "ỡ", "ợ", "u", "ú", "ù", "ủ", "ũ", "ụ", "ư", "ứ", "ừ", "ử", "ữ", "ự", "y", "ý", "ỳ", "ỷ", "ỹ", "ỵ" };
        String[] aUCS2Lower = { "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "d", "e", "e", "e", "e", "e", "e", "e", "e", "e", "e", "e", "e", "i", "i", "i", "i", "i", "i", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "u", "u", "u", "u", "u", "u", "u", "u", "u", "u", "u", "u", "y", "y", "y", "y", "y", "y" };

        // Chuyển sang chữ không dấu
        s = s.Trim().ToLower().Replace(" ", "_");
        int n = aUTF8Lower.Length;
        for (int i = 0; i < n; i++)
        {
            s = s.Replace(aUTF8Lower[i], aUCS2Lower[i]);
        }

        // Lọc các ký tự
        string Filter = "._0123456789abcdefghijklmnopqrstuvwxyz";
        string Temp = "";
        for (int i = 0; i < s.Length; i++)
        {
            if (Filter.IndexOf(s[i]) >= 0)
            {
                Temp = Temp + s[i];
            }
        }
        while (Temp.IndexOf("__") >= 0)
        {
            Temp = Temp.Replace("__", "_");
        }

        return Temp;
    }

    public static string MediaFileName(string fileName)
    {
        fileName = UCS2Lower(fileName);
        if (fileName.Length > 50) fileName = fileName.Remove(0, fileName.Length - 50);
        fileName = fileName.Replace("img", "i");
        return Encrypts.MD5(DateTime.Now.ToString("yyMMddHHmmss")).Substring(0, 9) + "_" + fileName;
    }

    public static string MediaPath(string fileName)
    {
        fileName = UCS2Lower(fileName);
        return Encrypts.MD5(DateTime.Now.ToString("yyMMddHHmmss")).Substring(0, 9) + "_" + fileName;
    }
}
